package com.whfc.ms.api.mach.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.mach.dto.*;

import java.util.Date;
import java.util.List;

/**
 * @author sun_guodong
 * @description 设备数据服务
 * @date 2020-11-11
 */
public interface MsMachDataService {

    ListData<AppMachDTO> list(Integer deptId, Integer machType);

    /**
     * 设备列表(分页)
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param keyword
     * @param machType
     * @param state
     * @param corpId
     * @param bindFlag
     * @param netState
     * @param workState
     * @param machId
     * @return
     */
    PageData<AppMachDTO> list(Integer deptId, Integer pageNum, Integer pageSize, String keyword, Integer machType, Integer state, Integer corpId, Integer bindFlag, Integer netState, Integer workState, Integer machId);

    /**
     * 获取地图页设备列表
     *
     * @param deptId
     * @param corpId
     * @param keyword
     * @return
     */
    MapMachDTO mapList(Integer deptId, Integer corpId, String keyword);

    /**
     * 后台统计设备数据
     *
     * @param deptId
     * @param keyword
     * @return
     */
    MachDataStatDTO numStat(Integer deptId, String keyword);

    /**
     * 获取设备数据列表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param keyword
     * @param bindFlag
     * @param netState
     * @param workState
     * @return
     */
    PageData<AppMachDTO> dataList(Integer deptId, Integer pageNum, Integer pageSize, String keyword, Integer bindFlag, Integer netState, Integer workState);

    /**
     * 获取设备数据列表
     *
     * @param deptId
     * @param keyword
     * @param deviceType
     * @return
     */
    ListData<AppMachDTO> dataList(Integer deptId, String keyword, Integer deviceType);

    /**
     * 云管家列表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param keyword
     * @param startTime
     * @param endTime
     * @return
     */
    PageData<AppMachDTO> deviceList(Integer deptId, Integer pageNum, Integer pageSize, String keyword, Date startTime, Date endTime);

    /**
     * 查找某一台设备信息
     *
     * @param machId
     * @return
     */
    AppMachDTO getMachInfo(Integer machId);

    /**
     * 获取设备二维码
     *
     * @param machId
     * @return
     */
    OssPathDTO getMachQr(Integer machId);

    /**
     * 获取设备的运动轨迹
     *
     * @param machId
     * @param date
     * @return
     */
    AppMachGpsDTO gpsLog(Integer machId, Date date);

    /**
     * 查询项目所有设备gps轨迹
     *
     * @param deptId
     * @param date
     * @return
     */
    List<AppMachGpsDTO> getAllMachGpsList(Integer deptId, Date date);

    /**
     * 查找单台设备一天工时
     *
     * @param machId
     * @param date
     * @return
     */
    MachRunDataDTO getWorkData(Integer machId, Date date);

    /**
     * 查找单台设备一段时间工时
     *
     * @param machId
     * @param startDate
     * @param endDate
     * @return
     */
    MachRunDataDTO getMachWorkAndOilData(Integer machId, Date startDate, Date endDate);

    /**
     * 查找单台设备多天运行指数
     *
     * @param machId
     * @param startDate
     * @param endDate
     * @return
     */
    MachRadarMapDTO getRadarData(Integer machId, Date startDate, Date endDate);

    /**
     * 查找单台设备多天油耗
     *
     * @param machId
     * @param startDate
     * @param endDate
     * @return
     */
    MachRunDataDTO getOilData(Integer machId, Date startDate, Date endDate);

    /**
     * 查询单台设备单日油耗
     *
     * @param machId
     * @param date
     * @return
     */
    MachRunDataDTO getOilData(Integer machId, Date date);

    /**
     * 设备日志
     *
     * @param deptId
     * @param date
     * @return
     */
    MachLogNumDTO dayReportDate(Integer deptId, Date date);
}
